package System_4_24;

//  System 类常用的方法
//  1.static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
//    从源数组src的srcPos位置复制length个元素到目标数组dest的destpos位置
//  2.static void currentTimeMillis()  返回以毫秒为单位的当前时间
//  3.static Properties getProperties  获取当前系统全部属性
//  4.static String getProperty(String key)  获取指定键描述的系统属性
//  5.static void gc()  运行垃圾回收器，并对内存中的垃圾进行回收
//  6.static void exit(int status)  用于终止当前正在运行的Java虚拟机，其中参数status表示状态码，若状态码为0，则表示异常终止

import java.util.Enumeration;
import java.util.Properties;

@SuppressWarnings("ALL")
class person
{
    private String name;
    private int age;

    public person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public person() {
    }
    public String toString()
    {
        return "姓名" + this.name + "年龄" + this.age;
    }
    //下面定义的finalize()方法会在垃圾回收前调用
    protected void finalize() throws Throwable  //此处finalize有问题
    {
        System.out.println("对象被释放-->" + this);
    }
}
public class Test1 {
    public static void main(String[] args) {
        /*
        //1.arraycopy()方法  注意：数组不能过小，越界后会报错
        int[] fromArray = {10,11,12,13,14,15};  //源数组
        int[] toArray = {20,21,22,23,24,25,26};  //目标数组
        System.arraycopy(fromArray, 2, toArray, 3, 4); //复制数组元素
        //复制后打印
        System.out.println("打印复制后的数组");
        for (int i = 0; i < toArray.length; i++) {
            if(i != toArray.length - 1)
            {
                System.out.print(toArray[i] + ",");
            }
            else
            {
                System.out.println(toArray[i]);
            }
        }
         */

        /*
        //2.currentTimeMillis()方法
        long startTime = System.currentTimeMillis();  //循环开始时当前的时间
        int sum = 0;
        for (int i = 0; i < 100000000 ;i++){
            sum += i;
        }
        long endTime = System.currentTimeMillis();   //结束循环时的当前时间
        System.out.println("程序运行的时间为：" + (endTime - startTime) + "ms");
         */

        /*
        //3.getProperties() 和 getProperty()方法
        //获取当前系统属性
        Properties properties = System.getProperties();
        //获取所有系统属性的键，返回Enumeration对象
        Enumeration propertyNames = properties.propertyNames();
        while(propertyNames.hasMoreElements())
        {
            //获取系统属性的键
            String key = (String) propertyNames.nextElement();
            //获取当前键的对应的值
            String value = System.getProperty(key);
            System.out.println(key + "--->" + value);
        }
        */

        //4.gc()方法
        //创建Person对象
        person p = new person("张三",20);
        //将变量置为null，让对象p成为垃圾
        p = null;
        //调用gc()方法进行垃圾回收
        System.gc();
        for (int i = 0; i < 1000000; i++) {
            //为了延长程序运行时间，执行空循环
        }
    }
}
